/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mware_lib;

/**
 * @author 
 */
public abstract class StringDecoder {

    public static boolean hasException(String message) {
        String exception = StringDecoder.getReturnParam(0, message);
        if (exception.equals("none")) {
            return false;
        }
        return true;
    }

    /**
     * extrahiert: return value von reply nachrichten
     * @param message
     * @return 
     */
    public static String getReturnValue(String message) {
        return StringDecoder.getReturnParam(2, message);
    }

    /**
     * extrahiert: return type von reply nachrichten
     * @param message
     * @return 
     */
    public static String getReturnType(String message) {
        return StringDecoder.getReturnParam(1, message);
    }

    /**
     * extrahiert: parameter an index position unserer nachricht
     * @param index
     * @param message
     * @return 
     */
    private static String getReturnParam(int index, String message) {
        String[][] messageContent = StringDecoder.getKeyValuePairs(message);
        return messageContent[index][1];
    }

    /**
     * umwandlung in 2dim array für index zugriff
     * [[ "methodenname", "rebind" ], [...], ...  ]
     * @param message
     * @return 
     */
    private static String[][] getKeyValuePairs(String message) {
        String[] messageArray = message.split(";");
        String[][] messageContent = new String[messageArray.length][2];
        for (int i = 0; i < messageArray.length; i++) {
            messageContent[i] = messageArray[i].split(":");
        }
        return messageContent;
    }

    /**
     * extrahiert: die objektreferenz aus der nachricht
     * @param message
     * @return 
     */
    public static String getReferenceByMessage(String message) {
        return message.split(";")[0];
    }

    /**
     * 
     * extrahiert: die konkrete nachricht ohne refernz präfix
     * @param message
     * @return 
     */
    public static String extractMessage(String message) {

        int beginIndex = message.indexOf(';');
        return message.substring(beginIndex + 1, message.length());
    }
}
